// pages/question_by_level/question_by_level.js

/** 工具 */
var utils = require("../../utils/utils");

/** 数学库 */
var math = require("../../utils/math");

/** 最大的level，表示有几种题目类型 */
const MAX_LEVEL = 6;

// TODO:需要实现在页面上选择或更改level的值的功能
/** 根据不同的level来出题，取值范围为[1, MAX_LEVEL] */
var level = 1;

// const levels = utils.range(1, MAX_LEVEL);
/** levels */
const levels = [
	"一位数加减法",
	"两位数加减法",
	"一位数乘一位数",
	"一位数乘两位数",
	"两位数乘两位数",
	"简单除法"
];

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		/** 用户输入的答案 */
		input_txt: '',
		/** 问题 */
		question_txt: '',
		/** 判断结果 */
		judge_txt: '',
		/** 问题的答案 */
		answer: 0,
		/** picker的序号 */
		level: 0,
		/** picker的序号数组 */
		levels: levels,
	},

	/** 选择level */
	select_level: function (e) {
		this.setData({
			level: parseInt(e.detail.value)
		});
		level = this.data.level + 1;
		this.random_question(level);
	},

	/**
	 * 根据level随机生成一个问题，
	 * 不同的level调用相应的问题生成函数，
	 * 如需添加一个新的类型的问题就需要添加对应的 case i 和 random_question_level_i()
	 */
	random_question(level) {
		let question =
			level === 1 ? this.random_question_level_1() :
			level === 2 ? this.random_question_level_2() :
			level === 3 ? this.random_question_level_3() :
			level === 4 ? this.random_question_level_4() :
			level === 5 ? this.random_question_level_5() :
			level === 6 ? this.random_question_level_6() :
			this.random_question_level_1();
		this.setData({
			input_txt: '',
			judge_txt: ''
		});
	},

	/** 随机生成 level 1 题目：一位数加减法 */
	random_question_level_1: function () {
		let num1, op, num2, ans;
		let type = utils.randint(0, 1);
		if (type === 1) {
			num1 = utils.randint(0, 9);
			num2 = utils.randint(0, 9 - num1);
			op = '+';
			ans = num1 + num2;
		} else {
			num1 = utils.randint(0, 9);
			num2 = utils.randint(0, num1);
			op = '-';
			ans = num1 - num2;
		}
		this.setData({
			question_txt: " " + num1 + " " + op + " " + num2 + " = ",
			answer: ans
		});
	},

	/** 随机生成 level 2 题目：两位数加减法 */
	random_question_level_2: function () {
		let num1, op, num2, ans;
		let type = utils.randint(0, 1);
		if (type === 1) {
			num1 = utils.randint(10, 99);
			num2 = utils.randint(10, 99 - num1);
			op = '+';
			ans = num1 + num2;
		} else {
			num1 = utils.randint(10, 99);
			num2 = utils.randint(10, num1);
			op = '-';
			ans = num1 - num2;
		}
		this.setData({
			question_txt: " " + num1 + " " + op + " " + num2 + " = ",
			answer: ans
		});
	},

	/** 随机生成 level 3 题目：一位数乘以一位数 */
	random_question_level_3: function () {
		let num1, op, num2, ans;
		num1 = utils.randint(1, 9);
		num2 = utils.randint(1, 9);
		op = '*';
		ans = num1 * num2;
		this.setData({
			question_txt: " " + num1 + " " + op + " " + num2 + " = ",
			answer: ans
		});
	},

	/** 随机生成 level 4 题目：一位数乘以两位数 */
	random_question_level_4: function () {
		let num1, op, num2, ans;
		num1 = utils.randint(1, 9);
		num2 = utils.randint(10, 99);
		op = '*';
		ans = num1 * num2;
		this.setData({
			question_txt: " " + num1 + " " + op + " " + num2 + " = ",
			answer: ans
		});
	},

	/** 随机生成 level 5 题目：两位数乘以两位数 */
	random_question_level_5: function () {
		let num1, op, num2, ans;
		num1 = utils.randint(10, 99);
		num2 = utils.randint(10, 99);
		op = '*';
		ans = num1 * num2;
		this.setData({
			question_txt: " " + num1 + " " + op + " " + num2 + " = ",
			answer: ans
		});
	},

	/** 随机生成 level 6 题目：除法 */
	random_question_level_6: function () {
		let num1, op, num2, ans;
		num2 = utils.randint(1, 9);
		ans = utils.randint(1, 9);
		num1 = num2 * ans;
		op = '÷';
		this.setData({
			question_txt: " " + num1 + " " + op + " " + num2 + " = ",
			answer: ans
		});
	},

	/** 将输入框中的内容放入input变量*/
	input_answer: function (e) {
		this.setData({
			input_txt: String(e.detail.value),
		})
	},

	/**  按下确认键，进行判断*/
	enter: function (e) {
		let input = parseInt(this.data.input_txt);
		let ans = this.data.answer;
		if (input === ans) {
			this.setData({
				judge_txt: "回答正确！"
			});
		} else {
			this.setData({
				judge_txt: "回答错误！"
			});
		}
	},

	/**  按下下一题按钮，刷新题目*/
	next_question: function () {
		this.random_question(level);
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		this.random_question(level);
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})